home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 22 / Amiga Format AFCD22 (Jan 1998, Issue 106).iso / -seriously_amiga- / shareware / hardware / lcdaemon / programmer / lcdecho / lcdecho.c
C/C++ Source or Header  |  1997-11-05  |  2KB  |  75 lines

  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <signal.h>
  5. #include <proto/exec.h>
  6. #include <proto/dos.h>
  7. #include <exec/ports.h>
  8. #include <dos/dos.h>
  9. #include "lcd.h"
  10.  
  11. struct MsgPort *replyport;
  12. struct lcdmessage msg;
  13. struct lcdparams lcdpar;
  14. LONG time=100;
  15. char text[1000];
  16. char message[1000];
  17. STRPTR argstring="TIME/K/N,TEXT/A";
  18.  
  19. int SafePutToPort(struct lcdmessage *message,STRPTR portname){
  20.     struct MsgPort *port;
  21.     Forbid();
  22.     port=FindPort(portname);
  23.     if(port) PutMsg(port,(struct Message *)message);
  24.     Permit();
  25.     return(port?TRUE:FALSE);
  26. }
  27.  
  28. int main(int argc,char **argv){
  29.     register int i;
  30.     char *to;
  31.     LONG argarray[]={(LONG)&time,(LONG)""};
  32.     struct RDArgs *args=NULL;
  33.  
  34.     signal(SIGINT,SIG_IGN);
  35.     if(args=ReadArgs(argstring,argarray,NULL)){
  36.  
  37.         if(replyport=CreateMsgPort()){
  38.             msg.lcd_Message.mn_Node.ln_Type=NT_MESSAGE;
  39.             msg.lcd_Message.mn_Length=sizeof(struct lcdmessage);
  40.             msg.lcd_Message.mn_ReplyPort=replyport;
  41.             msg.lcd_Priority=LCDPRI_APPLICATION;
  42.  
  43.             msg.lcd_Code=LCDMSG_ASKPARAMS;
  44.             msg.lcd_Data=&lcdpar;
  45.             if(SafePutToPort(&msg,lcdportname)){
  46.                 WaitPort(replyport);
  47.                 GetMsg(replyport);
  48.                 for(i=0,to=message;((STRPTR)(argarray[1]))[i];i++){
  49.                     switch(((STRPTR)(argarray[1]))[i]){
  50. /*                    case 163:
  51.                         while(to<&message[lcdpar.virtualwidth]) *to++=' ';
  52.                         break;*/
  53.                     default:
  54.                         *to++=((STRPTR)(argarray[1]))[i];
  55.                     }
  56.                 }
  57.                 *to=0;
  58.                 msg.lcd_Code=LCDMSG_QUEUE;
  59.                 msg.lcd_Data=message;
  60.                 msg.lcd_Ticks=*((LONG *)argarray[0]);
  61.                 msg.lcd_Priority=LCDPRI_APPLICATION;
  62.                 if(SafePutToPort(&msg,lcdportname)){
  63.                     WaitPort(replyport);
  64.                     GetMsg(replyport);
  65.                 }
  66.             }
  67.             DeleteMsgPort(replyport);
  68.         }
  69.         FreeArgs(args);
  70.     } else {
  71.         printf("Usage: %s %s\n",argv[0],argstring);
  72.     }
  73.     return(0);
  74. }
  75.